{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%run 4.3.2-common.ipynb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Principal values are tensor([9.3440e+03, 5.3373e+08])\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean loss in information: 68.4832763671875\n",
      " - high\n"
     ]
    }
   ],
   "source": [
    "N = 100\n",
    "\n",
    "torch.manual_seed(42)\n",
    "\n",
    "# Create a random data vector\n",
    "x_0 = torch.normal(0, 100, (N,))\n",
    "\n",
    "# Create a highly correlated non linear vector\n",
    "# x1 = 2x^2. Then, add random noise to it.\n",
    "x_1 = 2 * (x_0 ** 2) + torch.normal(0, 5, (N,))\n",
    "\n",
    "# Create data matrix with x_0, x_1 as columns.\n",
    "X = torch.column_stack((x_0, x_1))\n",
    "\n",
    "# Perform PCA\n",
    "principal_values, principal_components = pca(X)\n",
    "\n",
    "principal_values = principal_values.real\n",
    "principal_components = principal_components.real\n",
    "\n",
    "print(\"Principal values are {}\".format(principal_values))\n",
    "\n",
    "# Plot the pair of values as X and Y axes.\n",
    "# Because of the correlation, the points will\n",
    "# *not* be spread uniformly over the X-Y plane.\n",
    "# They will form a cluster around the curve\n",
    "# y = 2x^2.\n",
    "# The principal axis will not capture underlying\n",
    "# pattern of the non-linear data.\n",
    "plt.figure()\n",
    "plt.scatter(X[:, 0], X[: , 1], color=\"green\")\n",
    "plt.title('Non linear dataset')\n",
    "plt.xlabel('x0')\n",
    "plt.ylabel('x1')\n",
    "\n",
    "major_index = torch.argmax(principal_values)\n",
    "minor_index = torch.argmin(principal_values)\n",
    "\n",
    "draw_line(principal_components[:, major_index].numpy(),\n",
    "          min_x=-1000, max_x=1000)\n",
    "draw_line(principal_components[:, minor_index].numpy(),\n",
    "          min_x=-100, max_x=100, color=\"red\")\n",
    "plt.show()\n",
    "\n",
    "draw_line(principal_components[:, major_index].numpy(),\n",
    "          min_x=-1000, max_x=1000)\n",
    "draw_line(principal_components[:, minor_index].numpy(),\n",
    "          min_x=-500, max_x=500, color=\"red\")\n",
    "plt.show()\n",
    "\n",
    "\n",
    "# If we perform dimensionality reduction in this case,\n",
    "# there will be lots of loss in information.\n",
    "first_princpal_vec = principal_components[:,\n",
    "                                         major_index]\n",
    "first_princpal_vec = first_princpal_vec.reshape((-1,\n",
    "                                                 1))\n",
    "X_proj = torch.matmul(X, first_princpal_vec)\n",
    "X_back_proj = torch.matmul(X_proj,\n",
    "                     torch.linalg.pinv(first_princpal_vec)) \n",
    "info_loss = torch.sqrt(torch.mean((X_back_proj - X)**2))\n",
    "print(\"Mean loss in information: {}\\n - high\".\\\n",
    "      format(info_loss))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
